There is prior art disclosing the design and implementation of partitions in a computing device. One example is an Operating System that creates separate partitions for different users, and separate partitions for different applications used by one user. Virtualization is a second example of a technique used to create partitions. A virtual machine monitor creates separate partitions that can each execute a separate operating system. A third example of a technique used to create partitions consists of two separate microprocessors, each executing different software, with hardware to separate resources as required by the device. This third example is the case with Intel® devices containing the Intel® Management Engine™ (ME, later renamed Intel® Converged Security and Management Engine™), a trusted execution environment, which is a separate microprocessor from the main microprocessor. The ME can get input from the user and produce a display that cannot be viewed by any software executing on the main microprocessor. A fourth example of a technique used to create partitions is illustrated by the ARM (Advanced Resource Managers) TrustZone® technology, a trusted execution environment, which provides for a normal OS and a secure OS to execute on the same processor, with the property that the execution in the secure OS is protected from the normal OS. ARM has also implemented trusted input and display capabilities for TrustZone®, as described in trusted execution environment documents. A fifth example of a technique used to create partitions is the Intel® Software Guard Extensions™ (SGX), another trusted execution environment. SGX provides an enclave to execute an application protected from all other software and firmware on the device. U.S. published patent application 20150086012 describes a method to add protected display to SGX and U.S. published patent application 20140359305 describes a method to add protected input to SGX. Thus, there are three different approaches that provide for partitions for executing software that is protected from other software on the system, and provide secure input, output, and storage to the protected partition. However, none of these approaches meet all the requirements laid out in this invention.
There is prior art disclosing the design and implementation of key escrow systems, wherein a key escrow agent is provided with cryptographic keys that can be used to decrypt communications from a device.